Parallel Garbage Collector

Java Technologies - জাভা ভার্চুয়াল মেশিন (Java Virtual Machine) JVM এর Garbage Collectors এর ধরণ |
155
155

Garbage Collection (GC) হল Java Virtual Machine (JVM)-এর একটি গুরুত্বপূর্ণ কার্যক্রম যা অব্যবহৃত বা অপ্রয়োজনীয় অবজেক্টগুলিকে মুছে ফেলে মেমরি মুক্ত করে। Java এর Garbage Collection প্রক্রিয়া বিভিন্ন ধরনের সংগ্রাহক (garbage collectors) দ্বারা পরিচালিত হতে পারে, যার মধ্যে Parallel Garbage Collector একটি জনপ্রিয় এবং দক্ষ সংগ্রাহক।

Parallel Garbage Collector:

Parallel Garbage Collector (বা Throughput Collector) হল JVM এর একটি বিশেষ ধরনের garbage collector যা multithreaded কনফিগারেশন ব্যবহার করে। এর প্রধান উদ্দেশ্য হল garbage collection process দ্রুত করা এবং প্রোগ্রামের জন্য সেরা throughput প্রদান করা। Parallel Garbage Collector মূলত minor GC এবং major GC প্রক্রিয়ায় একাধিক থ্রেড ব্যবহার করে যা মেমরি পরিচালনা করতে সক্ষম। এটি সিঙ্গল থ্রেডের Garbage Collectors-এর তুলনায় অনেক দ্রুত কাজ করে, বিশেষত মাল্টি-প্রসেসর সিস্টেমে।

Parallel Garbage Collector এর প্রধান বৈশিষ্ট্য:

  1. Multithreaded Collection:
    • Parallel Garbage Collector একাধিক থ্রেড ব্যবহার করে garbage collection প্রক্রিয়া সম্পন্ন করে, যা সিঙ্গল থ্রেডের সংগ্রাহকের চেয়ে অনেক দ্রুত।
    • এটি প্রধানত minor GC (Young Generation) এর ক্ষেত্রে কার্যকর, যেখানে অবজেক্টগুলির মৃত্যুর হার বেশি থাকে এবং দ্রুত মেমরি ব্যবস্থাপনা প্রয়োজন।
  2. Throughput Maximization:
    • Parallel Garbage Collector-এর প্রধান লক্ষ্য হল throughput বাড়ানো, অর্থাৎ, কতটা সময় প্রোগ্রাম কার্যকরীভাবে কাজ করছে এবং কতটা সময় গার্বেজ কালেকশন হচ্ছে, তার মধ্যে পার্থক্য কমানো।
    • এটি কম সময়ের মধ্যে মেমরি পরিষ্কার করে, যার ফলে প্রোগ্রামটি বেশি সময় চালু থাকে এবং কম সময় ধরে garbage collection প্রক্রিয়া চলে।
  3. Stop-the-World Event:
    • Stop-the-World Event হল একটি পরিস্থিতি যেখানে JVM সিস্টেমের সমস্ত থ্রেড থামিয়ে garbage collection পরিচালনা করে। Parallel GC এমন একটি stop-the-world event তৈরি করে যা সমস্ত থ্রেডকে থামিয়ে দেয় এবং এই থ্রেডগুলো পুনরায় শুরু হওয়ার আগে garbage collection সম্পন্ন হয়।
    • যেহেতু এই প্রক্রিয়া অনেক দ্রুত কাজ করে, তাই থ্রেডগুলি খুব কম সময়ের জন্য থামায় থাকে।
  4. Young Generation and Old Generation Collection:
    • Parallel Garbage Collector প্রথমে Young Generation (যেখানে নতুন অবজেক্ট তৈরি হয়) পরিষ্কার করে। Young Generation এর গার্বেজ কালেকশনকে Minor GC বলা হয়।
    • এরপরে, যখন Old Generation (যেখানে দীর্ঘ সময় ধরে অবজেক্ট থাকে) পরিষ্কার করতে হয়, তখন Major GC বা Full GC করা হয়, যেটি থ্রেড দ্বারা পরিচালিত হয়।
  5. Tuning and Configuration:

    • Parallel Garbage Collector কনফিগারেশন এবং টিউনিং এর মাধ্যমে আরও ভাল পারফরম্যান্স অর্জন করা যেতে পারে। JVM এর বিভিন্ন ফ্ল্যাগ এবং প্যারামিটার ব্যবহার করে এটি কাস্টমাইজ করা যায়।

    উদাহরণস্বরূপ:

    • -XX:+UseParallelGC: এটি Parallel Garbage Collector ব্যবহার করতে নির্দেশ দেয়।
    • -XX:ParallelGCThreads=: এখানে <n> দিয়ে থ্রেডের সংখ্যা নির্ধারণ করা হয়, যা গার্বেজ কালেকশনের জন্য ব্যবহৃত হবে।

Parallel Garbage Collector কিভাবে কাজ করে?

Parallel GC এর কাজের প্রক্রিয়া নিম্নরূপ:

  1. Young Generation Collection (Minor GC):
    • যখন Young Generation এ অবজেক্টগুলি পূর্ণ হয়ে যায়, তখন Minor GC প্রক্রিয়া শুরু হয়।
    • এখানে JVM একাধিক থ্রেড ব্যবহার করে young generation কে পরিষ্কার করে এবং অবজেক্টগুলোকে Old Generation এ স্থানান্তরিত করে।
  2. Old Generation Collection (Major/Full GC):
    • যখন Old Generation পূর্ণ হয়, তখন Full GC শুরু হয়, যা Young Generation সহ Old Generation কে পরিষ্কার করে।
    • Full GC তে পারফরম্যান্স কম হতে পারে, কারণ এটি stop-the-world event এবং থ্রেড থামানোর সাথে যুক্ত।
  3. Mark-Sweep-Compact Algorithm:
    • Parallel Garbage Collector Mark-Sweep-Compact অ্যালগরিদম ব্যবহার করে। এটি তিনটি ধাপে কাজ করে:
      1. Mark: প্রথমে সমস্ত অবজেক্ট চিহ্নিত করা হয়, যা এখনও ব্যবহার হচ্ছে।
      2. Sweep: অচিহ্নিত অবজেক্টগুলি মুছে ফেলা হয়।
      3. Compact: অবশিষ্ট অবজেক্টগুলি একত্রিত করা হয়, যাতে মেমরি আরও কার্যকরভাবে ব্যবহৃত হয়।
  4. Parallel Threads:
    • Parallel GC ব্যবহার করে একাধিক থ্রেড যখন garbage collection সম্পাদন করে, তখন এটি কার্যকরভাবে কাজ করে। JVM CPU কোরগুলির মধ্যে লোড ভাগ করে নেয় এবং দ্রুত কাজ সম্পন্ন করে।

Parallel Garbage Collector কনফিগারেশন উদাহরণ:

আপনি Parallel Garbage Collector সক্রিয় করতে JVM অপশনে নিচের ফ্ল্যাগ ব্যবহার করতে পারেন:

java -XX:+UseParallelGC -XX:ParallelGCThreads=4 -jar MyApp.jar

এই কমান্ডে:

  • -XX:+UseParallelGC: Parallel Garbage Collector চালু করে।
  • -XX:ParallelGCThreads=4: গার্বেজ কালেকশন প্রক্রিয়া চালানোর জন্য ৪টি থ্রেড নির্ধারণ করে।

Parallel Garbage Collector এর সুবিধা:

  1. Enhanced Performance:
    • একাধিক থ্রেড ব্যবহার করার কারণে Minor GC দ্রুত সম্পন্ন হয়, এবং কম সময়ে গার্বেজ কালেকশন প্রক্রিয়া চলে।
  2. Suitable for Multi-Core Systems:
    • Parallel GC মাল্টি-কোর প্রসেসর সিস্টেমে খুব কার্যকরী, কারণ এটি CPU কোরগুলির মধ্যে লোড ভাগ করে এবং দ্রুত গার্বেজ কালেকশন সম্পন্ন করে।
  3. High Throughput:
    • Throughput (প্রোগ্রাম এবং গার্বেজ কালেকশন এর মধ্যে সময়ের পার্থক্য) বাড়ানো হয়, যার ফলে প্রোগ্রামটি দীর্ঘ সময় ধরে চলতে থাকে এবং কম সময় ধরে garbage collection চলতে থাকে।

Parallel Garbage Collector এর অসুবিধা:

  1. Full GC Performance:
    • যদিও Minor GC দ্রুত হয়ে থাকে, কিন্তু Full GC (যে সময় পুরানো জেনারেশন ক্লিন হয়) সময় বেশি নিতে পারে এবং এটি একটি stop-the-world event হওয়ায় অ্যাপ্লিকেশনটি থামিয়ে দেয়।
  2. Memory Consumption:
    • Parallel GC আরও বেশি মেমরি ব্যবহার করতে পারে, কারণ এটি থ্রেডের সংখ্যা এবং heap space ব্যবস্থাপনায় বড়ো হয়ে থাকে।
  3. Latency Issues:
    • ছোট সিস্টেম বা সিস্টেম যেখানে কম লেটেন্সি প্রয়োজন, সেখানে Parallel GC কিছুটা সমস্যার সৃষ্টি করতে পারে, কারণ এটি থ্রেড থামানোর সাথে কাজ করে।

Parallel Garbage Collector JVM-এ একাধিক থ্রেড ব্যবহার করে garbage collection প্রক্রিয়াকে দ্রুততর এবং আরো দক্ষ করে তোলে। এটি throughput বাড়ানোর জন্য আদর্শ এবং মাল্টি-কোর প্রসেসরের সিস্টেমে ভালো পারফরম্যান্স প্রদান করে। তবে, যদি Full GC বেশি সময় নেয় অথবা পারফরম্যান্সের সমস্যা হয়, তাহলে JVM এর অন্যান্য গার্বেজ কালেকশন পদ্ধতি, যেমন G1 GC বা CMS GC, বিবেচনা করা যেতে পারে।

Content added By
Promotion